/*
 * MainFriendList.cpp
 *
 *  Created on: 2013. 9. 17.
 *      Author: jjaehuny
 */

#include "MainFriendList.h"
#include "../Session.h"

#include "../command/common.h"

#include "../command/connection/connection.h"

// world
#include "../command/world/CS_CHAT_MESSAGE.h"
//#include "../command/world/CS_INPUTINFO.h"
#include "../command/world/CS_ITEM_INFO_REQ.h"
#include "../command/world/CS_RELEASE_QUICK_SLOT.h"
#include "../command/world/CS_REQ_AUTO_TRAINING.h"
#include "../command/world/CS_REQ_CHANGE_MAIN_CHARACTER.h"
#include "../command/world/CS_REQ_COMPLETE_TRAINING.h"
#include "../command/world/CS_REQ_EQUIP_RELEASE.h"
#include "../command/world/CS_REQ_EQUIP.h"
#include "../command/world/CS_REQ_DESTROY_ITEM.h"
#include "../command/world/CS_REQ_FAIRY_INFO.h"
#include "../command/world/CS_REQ_INVEN_REFAIR.h"
#include "../command/world/CS_REQ_INVEN_REORDER.h"
#include "../command/world/CS_REQ_INVEN_USE.h"
#include "../command/world/CS_REQ_MOVE_ITEM.h"
#include "../command/world/CS_REQ_MY_LEVEL_EXP.h"
#include "../command/world/CS_REQ_QUEST_DATA.h"
#include "../command/world/CS_REQ_QUEST_UPDATE_QUEST.h"
#include "../command/world/CS_REQ_QUEST_UPDATE_STATE.h"
#include "../command/world/CS_REQ_RANDOM_STAT.h"
#include "../command/world/CS_REQ_SLOT_LIST.h"
#include "../command/world/CS_REQ_TITLE_DATA.h"
#include "../command/world/CS_REQ_TITLE_GET.h"
#include "../command/world/CS_REQ_TITLE_UPDATE.h"
#include "../command/world/CS_REQ_USER_EQUIP_ITEM_INFO.h"
#include "../command/world/CS_REQ_USER_INFO_DEFAULT.h"
#include "../command/world/CS_REQ_USER_INFO_EQUIPED.h"
#include "../command/world/CS_REQ_USER_INFO_FAIRY.h"
#include "../command/world/CS_REQ_USER_INFO_INVEN_BAG.h"
#include "../command/world/CS_REQ_USER_INFO_INVEN.h"
#include "../command/world/CS_REQ_USER_INFO_QUICKSLOT.h"
#include "../command/world/CS_REQ_USER_STAT_INFO.h"
#include "../command/world/CS_SELECT_TRAINING_TIME.h"
#include "../command/world/CS_REGIST_QUICK_SLOT.h"
#include "../command/world/CS_SLOT_PLAYER_CREATE.h"
#include "../command/world/CS_VEHICLE_BUY.h"
#include "../command/world/CS_VEHICLE_EQUIP.h"
#include "../command/world/CS_REQ_OPP_USER_INFO_DEFAULT_VILLIGE.h"
#include "../command/world/CS_ITEM_INFO_REQ.h"
#include "../command/world/CS_REQ_SOCIAL_INFO.h"
#include "../command/world/CS_REQ_USER_INFO_DETAIL.h"
#include "../command/world/world.h"



// Tutorial
#include "../command/world/NTutorial/Tutorial.h"
// Tutorial

// ability
#include "../command/ability/CS_APPLY_SKILL_POINT.h"
#include "../command/ability/CS_APPLY_STAT_POINT.h"
#include "../command/ability/CS_REQ_SKILL_BUFF.h"

// action
#include "../command/action/CS_ATTACK_START.h"
#include "../command/action/CS_DASH.h"
#include "../command/action/CS_LOCATION_MODIFY.h"
#include "../command/action/CS_MOVE.h"
#include "../command/action/CS_MOVE_MOB.h"
#include "../command/action/CS_STOP.h"
#include "../command/action/NN_LOCATION_MODIFY.h"

// battle
#include "../command/battle/CN_ATTACK_DUNGEON.h"
#include "../command/battle/CN_ATTACK.h"
#include "../command/battle/CN_KNOCK_DOWN.h"
#include "../command/battle/CN_SKILL.h"
#include "../command/battle/CN_STATUS.h"
#include "../command/battle/CS_CREATE_SLAVE.h"
#include "../command/battle/CS_DEATH_REQ.h"
#include "../command/battle/CS_REQ_USER_HPSP_INFO.h"

// dungeon
#include "../command/dungeon/dungeon.h"

#include "../command/matching/matching.h"

// matching
#include "../command/matching/CN_MATCH_REQ.h"
#include "../command/matching/CN_MATCH_RES.h"
#include "../command/matching/CS_DUNGEON_ENABLE_MAP_CHANGE_READY.h"
#include "../command/matching/CS_DUNGEON_ENABLE_MAP_CHANGE.h"
#include "../command/matching/CS_DUNGEON_ENTER_REQ.h"
//#include "../command/matching/CS_DUNGEON_INVITE_PARTY_RES.h"
//#include "../command/matching/CS_DUNGEON_INVITE_PARTY.h"
#include "../command/matching/CS_DUNGEON_MOB_CREATE.h"
#include "../command/matching/CS_DUNGEON_MOB_HP_INFO.h"
#include "../command/matching/CS_DUNGEON_OUT_REQ.h"
#include "../command/matching/CS_DUNGEON_PARTNER_INFO.h"
//#include "../command/matching/CS_DUNGEON_READY.h"
//#include "../command/matching/CS_DUNGEON_RECOMMAND_PARTNER_LIST.h"
#include "../command/matching/CS_MATCH_USER_INFO.h"
#include "../command/matching/CS_DUNGEON_GET_ITEM.h"
#include "../command/matching/CS_DUNGEON_GET_GOLD.h"

// server only
#include "../command/inbound/inbound.h"


#include "../Command.h"

namespace ProjectZ { namespace NState {

MainFriendList::MainFriendList()
{
	// TODO Auto-generated constructor stub

	_name = "MAINFRIENDLIST";

	// connection
	this->AddCommand(CMD_CS_REQ_SERVER_LIST, ProjectZ::NCommand::Command::CS_REQ_SERVER_LIST);
	this->AddCommand(CMD_CS_REQ_CHANNEL_LIST, ProjectZ::NCommand::Command::CS_REQ_CHANNEL_LIST);
	this->AddCommand(CMD_CS_REQ_PHYSICAL_CHANGE, ProjectZ::NCommand::Command::CS_REQ_PHYSICAL_CHANGE);
	this->AddCommand(CMD_CS_REQ_CHANNEL_RESERVE, ProjectZ::NCommand::Command::CS_REQ_CHANNEL_RESERVE);

	// common
	this->AddCommand(CMD_OPEN, ProjectZ::NCommand::OPEN::OnExecute);
	this->AddCommand(CMD_CLOSE, ProjectZ::NCommand::CLOSE::OnExecute);
	this->AddCommand(CMD_CS_PING, ProjectZ::NCommand::CS_PING::OnExecute);

	this->AddCommand(CMD_CS_REQ_LOGOUT, ProjectZ::NCommand::NConnection::CS_REQ_LOGOUT::OnExecute);

	this->AddCommand(CMD_CS_REQ_REMOTE_CONTROL, ProjectZ::NCommand::Command::CS_REQ_REMOTE_CONTROL);

	// world
//	using namespace ProjectZ::NCommand::NWorld;
	ADDCMD(NWorld, CS_CHAT_MESSAGE);
	//ADDCMD(NWorld, CS_INPUTINFO);
	this->AddCommand(CMD_CS_INPUTINFO, ProjectZ::NCommand::NWorld::CS_INPUTINFO::OnExecute);
	ADDCMD(NWorld, CS_RELEASE_QUICK_SLOT);
	ADDCMD(NWorld, CS_REQ_AUTO_TRAINING);
	//ADDCMD(NWorld, CS_REQ_CHANGE_MAIN_CHARACTER);
	ADDCMD(NWorld, CS_REQ_COMPLETE_TRAINING);
	ADDCMD(NWorld, CS_REQ_DESTROY_ITEM);
	ADDCMD(NWorld, CS_REQ_EQUIP_RELEASE);
	ADDCMD(NWorld, CS_REQ_EQUIP);
	//ADDCMD(NWorld, CS_REQ_FAIRY_INFO);
	this->AddCommand(CMD_CS_REQ_FAIRY_INFO, ProjectZ::NCommand::NWorld::CS_REQ_FAIRY_INFO::OnExecute);
	ADDCMD(NWorld, CS_REQ_INVEN_REFAIR);
	//ADDCMD(NWorld, CS_REQ_INVEN_REORDER);
	//ADDCMD(NWorld, CS_REQ_INVEN_USE);
	//ADDCMD(NWorld, CS_REQ_MOVE_ITEM);
	ADDCMD(NWorld, CS_REQ_MY_LEVEL_EXP);
	this->AddCommand(CMD_CS_REQ_DELETE_SLOT, ProjectZ::NCommand::NWorld::CS_REQ_DELETE_SLOT::OnExecute);
	this->AddCommand(CMD_CS_REQ_QUEST_DATA, ProjectZ::NCommand::NWorld::CS_REQ_QUEST_DATA::OnExecute);
	//ADDCMD(NWorld, CS_REQ_QUEST_DATA);
	ADDCMD(NWorld, CS_REQ_QUEST_UPDATE_QUEST);
	ADDCMD(NWorld, CS_REQ_QUEST_UPDATE_STATE);
	ADDCMD(NWorld, CS_REQ_RANDOM_STAT);
	ADDCMD(NWorld, CS_REQ_SLOT_LIST);
	ADDCMD(NWorld, CS_REQ_TITLE_DATA);
	ADDCMD(NWorld, CS_REQ_TITLE_GET);
	ADDCMD(NWorld, CS_REQ_TITLE_UPDATE);
	ADDCMD(NWorld, CS_REQ_USER_EQUIP_ITEM_INFO);
	ADDCMD(NWorld, CS_REQ_USER_INFO_DEFAULT);
	ADDCMD(NWorld, CS_REQ_USER_INFO_EQUIPED);
	ADDCMD(NWorld, CS_REQ_USER_INFO_FAIRY);
	//ADDCMD(NWorld, CS_REQ_USER_INFO_INVEN_BAG);
	this->AddCommand(CMD_CS_REQ_USER_INFO_INVEN_BAG, ProjectZ::NCommand::NWorld::CS_REQ_USER_INFO_INVEN_BAG::OnExecute);
	//ADDCMD(NWorld, CS_REQ_USER_INFO_INVEN);
	this->AddCommand(CMD_CS_REQ_USER_INFO_INVEN, ProjectZ::NCommand::NWorld::CS_REQ_USER_INFO_INVEN::OnExecute);
	ADDCMD(NWorld, CS_REQ_USER_INFO_QUICKSLOT);
	ADDCMD(NWorld, CS_REQ_USER_STAT_INFO);
	ADDCMD(NWorld, CS_SELECT_TRAINING_TIME);
	ADDCMD(NWorld, CS_REGIST_QUICK_SLOT);
	//ADDCMD(NWorld, CS_SLOT_PLAYER_CREATE);
	this->AddCommand(CMD_CS_SLOT_PLAYER_CREATE, ProjectZ::NCommand::NWorld::CS_SLOT_PLAYER_CREATE::OnExecute);
	ADDCMD(NWorld, CS_VEHICLE_BUY);
	ADDCMD(NWorld, CS_VEHICLE_EQUIP);
	ADDCMD(NWorld, CS_ITEM_INFO_REQ);
	ADDCMD(NWorld, CS_REQ_OPP_USER_INFO_DEFAULT_VILLAGE);
	ADDCMD(NWorld, CS_REQ_SOCIAL_INFO);
	ADDCMD(NWorld, CS_REQ_USER_INFO_DETAIL);
	this->AddCommand(CMD_CS_CHANGE_INTRO_STATE, ProjectZ::NCommand::NWorld::CS_CHANGE_INTRO_STATE::OnExecute);

	this->AddCommand(CMD_CS_REQ_INVEN_USE_UPGRADE_STONE, ProjectZ::NCommand::Command::CS_REQ_INVEN_USE_UPGRADE_STONE);
	this->AddCommand(CMD_CS_DUNGEON_CLEAR_LIST, ProjectZ::NCommand::Command::CS_DUNGEON_CLEAR_LIST);
	this->AddCommand(CMD_CS_DUNGEON_CLEAR_LIST_V2, ProjectZ::NCommand::Command::CS_DUNGEON_CLEAR_LIST_V2);
	this->AddCommand(CMD_CS_DUNGEON_CLEAR_LIST_V3, ProjectZ::NCommand::Command::CS_DUNGEON_CLEAR_LIST_V3);

	this->AddCommand(CMD_CS_REQ_INVEN_REORDER, ProjectZ::NCommand::Command::CS_REQ_INVEN_REORDER);

	this->AddCommand(CMD_CS_REQ_MOVE_TO_WAREHOUSE, ProjectZ::NCommand::Command::CS_REQ_MOVE_TO_WAREHOUSE);
	this->AddCommand(CMD_CS_REQ_MOVE_TO_INVEN, ProjectZ::NCommand::Command::CS_REQ_MOVE_TO_INVEN);
	this->AddCommand(CMD_CS_REQ_INVEN_USE, ProjectZ::NCommand::Command::CS_REQ_INVEN_USE);
	this->AddCommand(CMD_CS_REQ_COSTUME_INFO, ProjectZ::NCommand::Command::CS_REQ_COSTUME_INFO);
	this->AddCommand(CMD_CS_REQ_COSTUME_INFO_BY_ID, ProjectZ::NCommand::Command::CS_REQ_COSTUME_INFO_BY_ID);
	this->AddCommand(CMD_CS_REQ_AI_BATTLE_RESULT, ProjectZ::NCommand::Command::CS_REQ_AI_BATTLE_RESULT);

	this->AddCommand(CMD_CS_CHECK_VALIDATE_DATA, ProjectZ::NCommand::Command::CS_CHECK_VALIDATE_DATA);
	this->AddCommand(CMD_CS_REQ_OPEN_SLOT, ProjectZ::NCommand::Command::CS_REQ_OPEN_SLOT);
	this->AddCommand(CMD_CS_REQ_PVP_WIN_MESSAGE, ProjectZ::NCommand::Command::CS_REQ_PVP_WIN_MESSAGE);
	this->AddCommand(CMD_CS_REG_PVP_WIN_MESSAGE, ProjectZ::NCommand::Command::CS_REG_PVP_WIN_MESSAGE);
	this->AddCommand(CMD_CS_REQ_INVEN_IDENTIFY, ProjectZ::NCommand::Command::CS_REQ_INVEN_IDENTIFY);
	this->AddCommand(CMD_CS_REQ_MY_STATE, ProjectZ::NCommand::Command::CS_REQ_MY_STATE);
	this->AddCommand(CMD_CS_REQ_WEATHER_INFO, ProjectZ::NCommand::Command::CS_REQ_WEATHER_INFO);
	this->AddCommand(CMD_CS_REQ_FISHING_SUCCESS, ProjectZ::NCommand::Command::CS_REQ_FISHING_SUCCESS);
	this->AddCommand(CMD_CS_CPI_REQUEST, ProjectZ::NCommand::Command::CS_CPI_REQUEST);
	this->AddCommand(CMD_CS_REQ_CHANGE_MAIN_CHARACTER, ProjectZ::NCommand::Command::CS_REQ_CHANGE_MAIN_CHARACTER);
	this->AddCommand(CMD_CS_REQ_GAME_INFO, ProjectZ::NCommand::Command::CS_REQ_GAME_INFO);
	this->AddCommand(CMD_CS_MONTH_CHARGE_EVENT_INFO, ProjectZ::NCommand::Command::CS_MONTH_CHARGE_INFO);
	this->AddCommand(CMD_CS_VIP_INFO, ProjectZ::NCommand::Command::CS_VIP_INFO);
	this->AddCommand(CMD_CS_REQ_EQUIP_V2, ProjectZ::NCommand::Command::CS_REQ_EQUIP_V2);




	// Tutorial
	this->AddCommand(CMD_CS_REQ_SHOW_OTHERS, ProjectZ::NCommand::NWorld::NTutorial::CS_REQ_SHOW_OTHERS::OnExecute);
	//this->AddCommand(NTutorial,CS_REQ_SHOW_OTHERS);
	this->AddCommand(CMD_CS_REQ_TUTORIAL_LIST, ProjectZ::NCommand::NWorld::NTutorial::CS_REQ_TUTORIAL_LIST::OnExecute);
	this->AddCommand(CMD_CS_CHANGE_TUTORIAL_STATE, ProjectZ::NCommand::NWorld::NTutorial::CS_CHANGE_TUTORIAL_STATE::OnExecute);
	// Tutorial

	// ability
	this->AddCommand(CMD_CS_APPLY_SKILL_POINT, ProjectZ::NCommand::NAbility::CS_APPLY_SKILL_POINT::OnExecute);
	this->AddCommand(CMD_CS_APPLY_STAT_POINT, ProjectZ::NCommand::NAbility::CS_APPLY_STAT_POINT::OnExecute);
	this->AddCommand(CMD_CS_REQ_SKILL_BUFF, ProjectZ::NCommand::NAbility::CS_REQ_SKILL_BUFF::OnExecute);

	// action
	this->AddCommand(CMD_CS_ATTACK_START, ProjectZ::NCommand::NAction::CS_ATTACK_START::OnExecute);
	this->AddCommand(CMD_CS_DASH, ProjectZ::NCommand::NAction::CS_DASH::OnExecute);
	this->AddCommand(CMD_CS_LOCATION_MODIFY, ProjectZ::NCommand::NAction::CS_LOCATION_MODIFY::OnExecute);
	this->AddCommand(CMD_CS_MOVE, ProjectZ::NCommand::NAction::CS_MOVE::OnExecute);
	this->AddCommand(CMD_CS_MOVE_MOB, ProjectZ::NCommand::NAction::CS_MOVE_MOB::OnExecute);
	this->AddCommand(CMD_CS_STOP, ProjectZ::NCommand::NAction::CS_STOP::OnExecute);
	//this->AddCommand(CMD_NN_LOCATION_MODIFY, ProjectZ::NCommand::NAction::NN_LOCATION_MODIFY::OnExecute);

	// battle
	this->AddCommand(CMD_CN_ATTACK_DUNGEON, ProjectZ::NCommand::NBattle::CN_ATTACK_DUNGEON::OnExecute);
	//this->AddCommand(CMD_CN_ATTACK, ProjectZ::NCommand::NBattle::CN_ATTACK::OnExecute);
	this->AddCommand(CMD_CN_KNOCK_DOWN, ProjectZ::NCommand::NBattle::CN_KNOCK_DOWN::OnExecute);
	this->AddCommand(CMD_CN_SKILL, ProjectZ::NCommand::NBattle::CN_SKILL::OnExecute);
	this->AddCommand(CMD_CN_STATUS, ProjectZ::NCommand::NBattle::CN_STATUS::OnExecute);
	this->AddCommand(CMD_CS_CREATE_SLAVE, ProjectZ::NCommand::NBattle::CS_CREATE_SLAVE::OnExecute);
	this->AddCommand(CMD_CS_DEATH_REQ, ProjectZ::NCommand::NBattle::CS_DEATH_REQ::OnExecute);
	this->AddCommand(CMD_CS_REQ_USER_HPSP_INFO, ProjectZ::NCommand::NBattle::CS_REQ_USER_HPSP_INFO::OnExecute);

	// market
	this->AddCommand(CMD_CS_MARKET_MY_ITEM_LIST, ProjectZ::NCommand::Command::CS_MARKET_MY_ITEM_LIST);
	this->AddCommand(CMD_CS_MARKET_MY_ITEM_CANCEL, ProjectZ::NCommand::Command::CS_MARKET_MY_ITEM_CANCEL);
	this->AddCommand(CMD_CS_MARKET_ITEM_SALE_LIST, ProjectZ::NCommand::Command::CS_MARKET_ITEM_SALE_LIST);
	this->AddCommand(CMD_CS_MARKET_ITEM_REG, ProjectZ::NCommand::Command::CS_MARKET_ITEM_REG);
	this->AddCommand(CMD_CS_MARKET_ITEM_DETAIL_INFO, ProjectZ::NCommand::Command::CS_MARKET_ITEM_DETAIL_INFO);
	this->AddCommand(CMD_CS_MARKET_ITEM_BUY, ProjectZ::NCommand::Command::CS_MARKET_ITEM_BUY);
	this->AddCommand(CMD_CS_MARKET_SALE_ITEM_INFO, ProjectZ::NCommand::Command::CS_MARKET_SALE_ITEM_INFO);
	this->AddCommand(CMD_CS_MARKET_ITEM_SALE_LIST_V2, ProjectZ::NCommand::Command::CS_MARKET_ITEM_SALE_LIST_V2);
	this->AddCommand(CMD_CS_MARKET_MY_ITEM_LIST_V2, ProjectZ::NCommand::Command::CS_MARKET_MY_ITEM_LIST_V2);

	// matching
	//this->AddCommand(CMD_CN_MATCH_REQ, ProjectZ::NCommand::NMatching::CN_MATCH_REQ::OnExecute);
	this->AddCommand(CMD_CN_MATCH_RES, ProjectZ::NCommand::NMatching::CN_MATCH_RES::OnExecute);
	this->AddCommand(CMD_CS_DUNGEON_ENABLE_MAP_CHANGE, ProjectZ::NCommand::NMatching::CS_DUNGEON_ENABLE_MAP_CHANGE::OnExecute);
	this->AddCommand(CMD_CS_DUNGEON_ENABLE_MAP_CHANGE_READY, ProjectZ::NCommand::NMatching::CS_DUNGEON_ENABLE_MAP_CHANGE_READY::OnExecute);
	this->AddCommand(CMD_CS_DUNGEON_ENTER_REQ, ProjectZ::NCommand::NMatching::CS_DUNGEON_ENTER_REQ::OnExecute);
	//this->AddCommand(CMD_CS_DUNGEON_INVITE_PARTY_RES, ProjectZ::NCommand::NMatching::CS_DUNGEON_INVITE_PARTY_RES::OnExecute);
	//this->AddCommand(CMD_CS_DUNGEON_INVITE_PARTY, ProjectZ::NCommand::NMatching::CS_DUNGEON_INVITE_PARTY::OnExecute);
	this->AddCommand(CMD_CS_DUNGEON_MOB_CREATE, ProjectZ::NCommand::NMatching::CS_DUNGEON_MOB_CREATE::OnExecute);
	this->AddCommand(CMD_CS_DUNGEON_MOB_HP_INFO, ProjectZ::NCommand::NMatching::CS_DUNGEON_MOB_HP_INFO::OnExecute);
	this->AddCommand(CMD_CS_DUNGEON_OUT_REQ, ProjectZ::NCommand::NMatching::CS_DUNGEON_OUT_REQ::OnExecute);
	this->AddCommand(CMD_CS_DUNGEON_PARTNER_INFO, ProjectZ::NCommand::NMatching::CS_DUNGEON_PARTNER_INFO::OnExecute);
	//this->AddCommand(CMD_CS_DUNGEON_READY, ProjectZ::NCommand::NMatching::CS_DUNGEON_READY::OnExecute);
	//this->AddCommand(CMD_CS_DUNGEON_RECOMMAND_PARTNER_LIST, ProjectZ::NCommand::NMatching::CS_DUNGEON_RECOMMAND_PARTNER_LIST::OnExecute);
	this->AddCommand(CMD_CS_MATCH_USER_INFO, ProjectZ::NCommand::NMatching::CS_MATCH_USER_INFO::OnExecute);
	this->AddCommand(CMD_CS_DUNGEON_GET_ITEM, ProjectZ::NCommand::NMatching::CS_DUNGEON_GET_ITEM::OnExecute);
	this->AddCommand(CMD_CS_DUNGEON_GET_GOLD, ProjectZ::NCommand::NMatching::CS_DUNGEON_GET_GOLD::OnExecute);

	// dungeon
	this->AddCommand(CMD_CN_PARTY_ENTER, ProjectZ::NCommand::NDungeon::CN_PARTY_ENTER::OnExecute);
	this->AddCommand(CMD_CN_PARTY_LEAVE, ProjectZ::NCommand::NDungeon::CN_PARTY_LEAVE::OnExecute);
	this->AddCommand(CMD_CN_PARTY_READY, ProjectZ::NCommand::NDungeon::CN_PARTY_READY::OnExecute);

	this->AddCommand(CMD_CS_DUNGEON_CARD_REWARD_EXECUTE_READY, ProjectZ::NCommand::Command::CS_DUNGEON_CARD_REWARD_EXECUTE_READY);
	this->AddCommand(CMD_CS_DUNGEON_CARD_REWARD, ProjectZ::NCommand::Command::CS_DUNGEON_CARD_REWARD);
	this->AddCommand(CMD_CS_DUNGEON_CLEAR_DETAIL_INFO, ProjectZ::NCommand::Command::CS_DUNGEON_CLEAR_DETAIL_INFO);
	this->AddCommand(CMD_CS_DUNGEON_CLEAR_INFO, ProjectZ::NCommand::Command::CS_DUNGEON_CLEAR_INFO);
	this->AddCommand(CMD_CS_DUNGEON_CLEAR_INFO_V2, ProjectZ::NCommand::Command::CS_DUNGEON_CLEAR_INFO_V2);

	this->AddCommand(CMD_CS_REQ_DUNGEON_PARTY_CREATE_ROOM, ProjectZ::NCommand::Command::CS_REQ_DUNGEON_PARTY_CREATE_ROOM);
	this->AddCommand(CMD_CS_REQ_DUNGEON_PARTY_CREATE_ROOM_V2, ProjectZ::NCommand::Command::CS_REQ_DUNGEON_PARTY_CREATE_ROOM_V2);
	this->AddCommand(CMD_CS_REQ_DUNGEON_PARTY_LIST, ProjectZ::NCommand::Command::CS_REQ_DUNGEON_PARTY_LIST);
	this->AddCommand(CMD_CS_REQ_DUNGEON_PARTY_LIST_V2, ProjectZ::NCommand::Command::CS_REQ_DUNGEON_PARTY_LIST_V2);
	this->AddCommand(CMD_CS_REQ_DUNGEON_PARTY_JOIN, ProjectZ::NCommand::Command::CS_REQ_DUNGEON_PARTY_JOIN);
	this->AddCommand(CMD_CS_REQ_DUNGEON_PARTY_JOIN_V2, ProjectZ::NCommand::Command::CS_REQ_DUNGEON_PARTY_JOIN_V2);
	this->AddCommand(CMD_CS_DUNGEON_PARTY_READY, ProjectZ::NCommand::Command::CS_DUNGEON_PARTY_READY);

	this->AddCommand(CMD_CS_PARTY_INVITE_RES, ProjectZ::NCommand::Command::CS_PARTY_INVITE_RES);
	//this->AddCommand(CMD_CS_PARTY_INVITE, ProjectZ::NCommand::NDungeon::CS_PARTY_INVITE::OnExecute);
	this->AddCommand(CMD_CS_PARTY_USER_LIST, ProjectZ::NCommand::NDungeon::CS_PARTY_USER_LIST::OnExecute);
	this->AddCommand(CMD_CS_USER_DEFAULT_INFO, ProjectZ::NCommand::NDungeon::CS_USER_DEFAULT_INFO::OnExecute);

	this->AddCommand(CMD_CS_REQ_DUNGEON_RANDOM_PARTY, ProjectZ::NCommand::Command::CS_REQ_DUNGEON_RANDOM_PARTY);
	this->AddCommand(CMD_CS_REQ_DUNGEON_RANDOM_PARTY_TIME_OVER, ProjectZ::NCommand::NDungeon::CS_REQ_DUNGEON_RANDOM_PARTY_TIME_OVER::OnExecute);
	this->AddCommand(CMD_CS_REQ_DUNGEON_CREATE_SINGLE, ProjectZ::NCommand::Command::CS_REQ_DUNGEON_CREATE_SINGLE);
	this->AddCommand(CMD_CS_REQ_DUNGEON_CREATE_PARTY_FRIEND, ProjectZ::NCommand::Command::CS_REQ_DUNGEON_CREATE_PARTY_FRIEND);
	this->AddCommand(CMD_CS_DUNGEON_INFO, ProjectZ::NCommand::Command::CS_DUNGEON_INFO);
	this->AddCommand(CMD_CN_DUNGEON_DETAIL_INFO, ProjectZ::NCommand::Command::CN_DUNGEON_DETAIL_INFO);
	this->AddCommand(CMD_CS_REQ_SELF_DEAD, ProjectZ::NCommand::Command::CS_REQ_SELF_DEAD);
	this->AddCommand(CMD_CS_TELEPORT_LOACATION, ProjectZ::NCommand::Command::CS_TELEPORT_LOCATION);
	this->AddCommand(CMD_CS_STATUS_RELEASE, ProjectZ::NCommand::Command::CS_STATUS_RELEASE);
	this->AddCommand(CMD_CS_REQ_DUNGEON_CREATE_SINGLE_V2, ProjectZ::NCommand::Command::CS_REQ_DUNGEON_CREATE_SINGLE_V2);
	this->AddCommand(CMD_CS_REQ_DUNGEON_CREATE_PARTY_FRIEND_V2, ProjectZ::NCommand::Command::CS_REQ_DUNGEON_CREATE_PARTY_FRIEND_V2);


	this->AddCommand(CMD_CS_DUNGEON_REBIRTH_ZEN, ProjectZ::NCommand::NDungeon::CS_DUNGEON_REBIRTH_ZEN::OnExecute);
	this->AddCommand(CMD_CS_DUNGEON_REBIRTH_VILLAGE, ProjectZ::NCommand::NDungeon::CS_DUNGEON_REBIRTH_VILLAGE::OnExecute);

	this->AddCommand(CMD_CS_DUNGEON_MOB_VARIATION, ProjectZ::NCommand::Command::CS_DUNGEON_MOB_VARIATION);
	this->AddCommand(CMD_CS_REQ_EVENT_DUNGEON_INFO, ProjectZ::NCommand::NDungeon::CS_REQ_EVENT_DUNGEON_INFO::OnExecute);
	this->AddCommand(CMD_CS_ENTER_EVENT_DUNGEON, ProjectZ::NCommand::NDungeon::CS_ENTER_EVENT_DUNGEON::OnExecute);
	this->AddCommand(CMD_CS_REQ_EVENT_DUNGEON_STAMINA_INFO, ProjectZ::NCommand::NDungeon::CS_REQ_EVENT_DUNGEON_STAMINA_INFO::OnExecute);
	this->AddCommand(CMD_CS_REQ_EVENT_DUNGEON_STAMINA_INFO_V2, ProjectZ::NCommand::NDungeon::CS_REQ_EVENT_DUNGEON_STAMINA_INFO_V2::OnExecute);

	this->AddCommand(CMD_CS_DUNGEON_CLEAR, ProjectZ::NCommand::Command::CS_DUNGEON_CLEAR);
	this->AddCommand(CMD_CS_REQ_DUNGEON_MOB_INFO, ProjectZ::NCommand::Command::CS_REQ_DUNGEON_MOB_INFO);

	// mail
	this->AddCommand(CMD_CS_GET_NEW_MAIL_COUNT, ProjectZ::NCommand::Command::CS_GET_NEW_MAIL_COUNT);
	this->AddCommand(CMD_CS_READ_MAIL_LIST, ProjectZ::NCommand::Command::CS_READ_MAIL_LIST);
	this->AddCommand(CMD_CS_READ_MAIL_DETAIL, ProjectZ::NCommand::Command::CS_READ_MAIL_DETAIL);
	this->AddCommand(CMD_CS_WRITE_MAIL, ProjectZ::NCommand::Command::CS_WRITE_MAIL);
	this->AddCommand(CMD_CS_READ_MAIL_DELETE, ProjectZ::NCommand::Command::CS_READ_MAIL_DELETE);
	this->AddCommand(CMD_CS_READ_MAIL_RECV_PRESENT, ProjectZ::NCommand::Command::CS_READ_MAIL_RECV_PRESENT);
	this->AddCommand(CMD_CS_MAIL_DELETE_ALL, ProjectZ::NCommand::Command::CS_MAIL_DELETE_ALL);
	this->AddCommand(CMD_CS_GET_NEW_MAIL_COUNT_V2, ProjectZ::NCommand::Command::CS_GET_NEW_MAIL_COUNT_V2);
	this->AddCommand(CMD_CS_GUILD_WRITE_MAIL, ProjectZ::NCommand::Command::CS_GUILD_WRITE_MAIL);


	//this->AddCommand(CMD_CS_BATTLE_RECONNECT_INFO, ProjectZ::NCommand::NDungeon::CS_BATTLE_RECONNECT_INFO);
	this->AddCommand(CMD_CS_BATTLE_RECONNECT_INFO, ProjectZ::NCommand::Command::CS_BATTLE_RECONNECT_INFO);

//	using ProjectZ::NCommand::NMail::MAIL;
//	this->AddCommand(CMD_CS_GET_NEW_MAIL_COUNT, MAIL::CS_GET_NEW_MAIL_COUNT);
//	this->AddCommand(CMD_CS_WRITE_MAIL, MAIL::CS_WRITE_MAIL);
//	this->AddCommand(CMD_CS_READ_MAIL_LIST, MAIL::CS_READ_MAIL_LIST);
//	this->AddCommand(CMD_CS_READ_MAIL_DETAIL, MAIL::CS_READ_MAIL_DETAIL);
//	this->AddCommand(CMD_CS_READ_MAIL_RECV_PRESENT, MAIL::CS_READ_MAIL_RECV_PRESENT);
//	this->AddCommand(CMD_CS_READ_MAIL_DELETE, MAIL::CS_READ_MAIL_DELETE);

	// pk
	this->AddCommand(CMD_CS_PK_END, ProjectZ::NCommand::Command::CS_PK_END);
	this->AddCommand(CMD_CS_PK_OUT_REQ, ProjectZ::NCommand::Command::CS_PK_OUT_REQ);
	this->AddCommand(CMD_CS_PK_READY, ProjectZ::NCommand::Command::CS_PK_READY);
	this->AddCommand(CMD_CS_PK_REBIRTH, ProjectZ::NCommand::Command::CS_PK_REBIRTH);
	this->AddCommand(CMD_CS_PK_RESULT, ProjectZ::NCommand::Command::CS_PK_RESULT);
	this->AddCommand(CMD_CS_REQ_PK_MAP_INFO, ProjectZ::NCommand::Command::CS_REQ_PK_MAP_INFO);
	this->AddCommand(CMD_CS_REQ_PK_USER_LIST, ProjectZ::NCommand::Command::CS_REQ_PK_USER_LIST);
	this->AddCommand(CMD_CS_PK_SEND_INVITATION, ProjectZ::NCommand::Command::CS_PK_SEND_INVITATION);
	this->AddCommand(CMD_CS_PK_INVITATION_RESULT, ProjectZ::NCommand::Command::CS_PK_INVITATION_RESULT);
	this->AddCommand(CMD_CS_PK_BATTLE_DETAIL_INFO, ProjectZ::NCommand::Command::CS_PK_BATTLE_DETAIL_INFO);
	this->AddCommand(CMD_CS_BATTLE_ROYAL_PARTNER_INFO, ProjectZ::NCommand::Command::CS_BATTLE_ROYAL_PARTNER_INFO);
	this->AddCommand(CMD_CS_PK_ROOM_LIST, ProjectZ::NCommand::Command::CS_PK_ROOM_LIST);
	this->AddCommand(CMD_CS_PK_REQ_CREATE_ROOM, ProjectZ::NCommand::Command::CS_PK_REQ_CREATE_ROOM);
	this->AddCommand(CMD_CS_PK_REQ_ROOM_JOIN, ProjectZ::NCommand::Command::CS_PK_REQ_ROOM_JOIN);
	this->AddCommand(CMD_CS_PK_REQ_ROOM_JOIN_V2, ProjectZ::NCommand::Command::CS_PK_REQ_ROOM_JOIN_V2);
	this->AddCommand(CMD_CS_PK_ROOM_LIST_V2, ProjectZ::NCommand::Command::CS_PK_ROOM_LIST_V2);
	this->AddCommand(CMD_CS_GET_HP_BUFF, ProjectZ::NCommand::Command::CS_GET_HP_BUFF);

	// PVP
	this->AddCommand(CMD_CS_ENTER_MATCH_ROOM, ProjectZ::NCommand::Command::CS_ENTER_MATCH_ROOM);
	this->AddCommand(CMD_CS_EXCHANGE_SCORE_REQ, ProjectZ::NCommand::Command::CS_EXCHANGE_SCORE_REQ);
	this->AddCommand(CMD_CS_FIGHT_END_WITH_BOT, ProjectZ::NCommand::Command::CS_FIGHT_END_WITH_BOT);
	this->AddCommand(CMD_CS_GET_MATCH_RESULT, ProjectZ::NCommand::Command::CS_GET_MATCH_RESULT);
//	this->AddCommand(CMD_CS_EXIT_PVP_MENU, ProjectZ::NCommand::Command::CS_EXIT_PVP_MENU);
//	this->AddCommand(CMD_CS_GET_PVP_MENU_INFO, ProjectZ::NCommand::Command::CS_GET_PVP_MENU_INFO);
	this->AddCommand(CMD_CS_MATCH_TIME_OVER, ProjectZ::NCommand::Command::CS_MATCH_TIME_OVER);
	this->AddCommand(CMD_CS_PRACTICE_MATCH_PLAYER, ProjectZ::NCommand::Command::CS_PRACTICE_MATCH_PLAYER);
	this->AddCommand(CMD_CS_QUICK_MATCH_PLAYER, ProjectZ::NCommand::Command::CS_QUICK_MATCH_PLAYER);
	this->AddCommand(CMD_CS_REQ_AI_INFO_DEFAULT, ProjectZ::NCommand::Command::CS_REQ_AI_INFO_DEFAULT);
//	this->AddCommand(CMD_CS_SEARCH_MATCH_PLAYER, ProjectZ::NCommand::Command::CS_SEARCH_MATCH_PLAYER);
	this->AddCommand(CMD_CS_PVP_FRIEND_MATCH_REQ, ProjectZ::NCommand::Command::CS_PVP_FRIEND_MATCH_REQ);
	this->AddCommand(CMD_CS_PVP_MATCH_RES, ProjectZ::NCommand::Command::CS_PVP_MATCH_RES);
	this->AddCommand(CMD_CS_PVP_TIME_OVER, ProjectZ::NCommand::Command::CS_PVP_TIME_OVER);
	this->AddCommand(CMD_CS_PVP_OUT_REQ, ProjectZ::NCommand::Command::CS_PVP_OUT_REQ);
	this->AddCommand(CMD_CN_READY, ProjectZ::NCommand::Command::CN_READY);
	this->AddCommand(CMD_CS_PVP_ROOM_CREATE, ProjectZ::NCommand::Command::CS_PVP_ROOM_CREATE);
	this->AddCommand(CMD_CS_PVP_ROOM_LIST, ProjectZ::NCommand::Command::CS_PVP_ROOM_LIST);
	this->AddCommand(CMD_CS_PVP_ROOM_LIST_V2, ProjectZ::NCommand::Command::CS_PVP_ROOM_LIST_V2);
	this->AddCommand(CMD_CS_PVP_ROOM_JOIN, ProjectZ::NCommand::Command::CS_PVP_ROOM_JOIN);


	// friend
	this->AddCommand(CMD_CS_SOCIAL_BOAST, ProjectZ::NCommand::Command::CS_SOCIAL_BOAST);
	this->AddCommand(CMD_CS_SOCIAL_BOAST_SM_V2, ProjectZ::NCommand::Command::CS_SOCIAL_BOAST_V2);
	this->AddCommand(CMD_CS_SOCIAL_RECOMMEND_FRIEND_LIST, ProjectZ::NCommand::Command::CS_SOCIAL_RECOMMEND_FRIEND_LIST);
	this->AddCommand(CMD_CS_SOCIAL_REQUEST_LOGOUT, ProjectZ::NCommand::Command::CS_SOCIAL_REQUEST_LOGOUT);
	this->AddCommand(CMD_CS_SOCIAL_REQUEST_MESSAGE_LIST, ProjectZ::NCommand::Command::CS_SOCIAL_REQUEST_MESSAGE_LIST);
	this->AddCommand(CMD_CS_SOCIAL_REQUEST_NEWS, ProjectZ::NCommand::Command::CS_SOCIAL_REQUEST_NEWS);
	this->AddCommand(CMD_CS_SOCIAL_REQUEST_UNREGISTER, ProjectZ::NCommand::Command::CS_SOCIAL_REQUEST_UNREGISTER);
	this->AddCommand(CMD_CS_SOCIAL_SEND_HEART_SM, ProjectZ::NCommand::Command::CS_SOCIAL_SEND_HEART_SM);
	this->AddCommand(CMD_CS_SOCIAL_SEND_HEART_SM_V2, ProjectZ::NCommand::Command::CS_SOCIAL_SEND_HEART_SM_V2);
	this->AddCommand(CMD_CS_SOCIAL_UPDATE_MY_STATUS, ProjectZ::NCommand::Command::CS_SOCIAL_UPDATE_MY_STATUS);
	this->AddCommand(CMD_CS_SOCIAL_FRIEND_BUFF_SM, ProjectZ::NCommand::Command::CS_SOCIAL_FRIEND_BUFF_SM);
	this->AddCommand(CMD_CS_SOCIAL_FRIEND_BUFF_SM_V2, ProjectZ::NCommand::Command::CS_SOCIAL_FRIEND_BUFF_SM_V2);
	this->AddCommand(CMD_CS_SOCIAL_INVITE_NOAPP_FRIEND_SM, ProjectZ::NCommand::Command::CS_SOCIAL_INVITE_NOAPP_FRIEND_SM);
	this->AddCommand(CMD_CS_SOCIAL_FRIEND_PLAYABLE, ProjectZ::NCommand::Command::CS_SOCIAL_FRIEND_PLAYABLE);
	this->AddCommand(CMD_CS_SOCIAL_FRIEND_PLAYABLE_V2, ProjectZ::NCommand::Command::CS_SOCIAL_FRIEND_PLAYABLE_V2);
	this->AddCommand(CMD_CS_SOCIAL_REQ_INGAME_FRIEND_SM, ProjectZ::NCommand::Command::CS_SOCIAL_REQ_INGAME_FRIEND_SM);
	this->AddCommand(CMD_CS_SOCIAL_CONFIRM_FRIEND_REQ, ProjectZ::NCommand::Command::CS_SOCIAL_CONFIRM_FRIEND_REQ);
	this->AddCommand(CMD_CS_SOCIAL_REQUEST_CONNECT_SM, ProjectZ::NCommand::Command::CS_SOCIAL_REQUEST_CONNECT_SM);
	this->AddCommand(CMD_CS_SOCIAL_REQUEST_CONNECT_SM_V2, ProjectZ::NCommand::Command::CS_SOCIAL_REQUEST_CONNECT_SM_V2);
	this->AddCommand(CMD_CS_SOCIAL_CONFIRM_NEWS, ProjectZ::NCommand::Command::CS_SOCIAL_CONFIRM_NEWS);
	this->AddCommand(CMD_CS_MAIN_FRIEND_LIST_DATA, ProjectZ::NCommand::Command::CS_MAIN_FRIEND_LIST_DATA);
	this->AddCommand(CMD_CS_LAST_WEEK_RANK_LIST, ProjectZ::NCommand::Command::CS_LAST_WEEK_RANK_LIST);
	this->AddCommand(CMD_CS_LAST_WEEK_RANK_REWARD, ProjectZ::NCommand::Command::CS_LAST_WEEK_RANK_REWARD);
	this->AddCommand(CMD_CS_LAST_WEEK_RANK_REWARD_INFO, ProjectZ::NCommand::Command::CS_LAST_WEEK_RANK_REWARD_INFO);
	this->AddCommand(CMD_CS_GACHYA_BOX, ProjectZ::NCommand::Command::CS_GACHYA_BOX);
	this->AddCommand(CMD_CS_SOCIAL_DELETE_FRIEND, ProjectZ::NCommand::Command::CS_SOCIAL_DELETE_FRIEND);
	this->AddCommand(CMD_CS_SOCIAL_SUMMON_FRIEND, ProjectZ::NCommand::Command::CS_SOCIAL_SUMMON_FRIEND);
	this->AddCommand(CMD_CS_SOCIAL_REPLY_SUMMON, ProjectZ::NCommand::Command::CS_SOCIAL_REPLY_SUMMON);
	this->AddCommand(CMD_CS_UPDATE_MY_PROFILE, ProjectZ::NCommand::Command::CS_UPDATE_MY_PROFILE);
	this->AddCommand(CMD_CS_WEEKEND_RANK_TIME, ProjectZ::NCommand::Command::CS_WEEKEND_RANK_TIME);
	this->AddCommand(CMD_CS_SOCIAL_FRIEND_ALL_BUF_TIME, ProjectZ::NCommand::Command::CS_SOCIAL_FRIEND_ALL_BUF_TIME);
	this->AddCommand(CMD_CS_SOCIAL_FRIEND_SIMPLE_LIST, ProjectZ::NCommand::Command::CS_SOCIAL_FRIEND_SIMPLE_LIST);
	this->AddCommand(CMD_CS_SOCIAL_FRIEND_SIMPLE_LIST_V2, ProjectZ::NCommand::Command::CS_SOCIAL_FRIEND_SIMPLE_LIST_V2);
	this->AddCommand(CMD_CS_SOCIAL_FRIEND_LIST_GET_GID, ProjectZ::NCommand::Command::CS_SOCIAL_FRIEND_LIST_GET_GID);
	this->AddCommand(CMD_CS_SOCIAL_INGAME_FRIEND_LIST_GET_GID, ProjectZ::NCommand::Command::CS_SOCIAL_INGAME_FRIEND_LIST_GET_GID);
	this->AddCommand(CMD_CS_SOCIAL_FRIEND_LIST_INFO, ProjectZ::NCommand::Command::CS_SOCIAL_FRIEND_LIST_INFO);
	this->AddCommand(CMD_CS_SOCIAL_INGAME_FRIEND_LIST_INFO, ProjectZ::NCommand::Command::CS_SOCIAL_INGAME_FRIEND_LIST_INFO);
	this->AddCommand(CMD_CS_SOCIAL_MYINFO, ProjectZ::NCommand::Command::CS_SOCIAL_MYINFO);
	this->AddCommand(CMD_CS_SOCIAL_NEWS_COUNT, ProjectZ::NCommand::Command::CS_SOCIAL_NEWS_COUNT);
	this->AddCommand(CMD_CS_SOCIAL_UPDATE_INVITATION_BLOCK, ProjectZ::NCommand::Command::CS_SOCIAL_UPDATE_INVITATION_BLOCK);
	this->AddCommand(CMD_CS_SOCIAL_UPDATE_FRIENDSHIP_BLOCK, ProjectZ::NCommand::Command::CS_SOCIAL_UPDATE_FRIENDSHIP_BLOCK);
	this->AddCommand(CMD_CS_SOCIAL_SUMMON_FROM_FRIEND, ProjectZ::NCommand::Command::CS_SOCIAL_SUMMON_FROM_FRIEND);
	this->AddCommand(CMD_CS_KAKAO_INVITATION_COUNT, ProjectZ::NCommand::Command::CS_KAKAO_INVITATION_COUNT);
	this->AddCommand(CMD_CS_SOCIAL_CHARACTER_INFO, ProjectZ::NCommand::Command::CS_SOCIAL_CHARACTER_INFO);
	this->AddCommand(CMD_CS_SOCIAL_CHARACTER_INFO_V2, ProjectZ::NCommand::Command::CS_SOCIAL_CHARACTER_INFO_V2);
	this->AddCommand(CMD_CS_LAST_WEEK_RANK_REWARD_V2, ProjectZ::NCommand::Command::CS_LAST_WEEK_RANK_REWARD_V2);
	this->AddCommand(CMD_CS_SOCIAL_FRIEND_FRIENDSHIP_POINT, ProjectZ::NCommand::Command::CS_SOCIAL_FRIEND_FRIENDSHIP_POINT);
	this->AddCommand(CMD_CS_SOCIAL_SEND_STAMINA_SM, ProjectZ::NCommand::Command::CS_SOCIAL_SEND_STAMINA_SM);
	this->AddCommand(CMD_CS_SOCIAL_CONFIRM_NEWS_V2, ProjectZ::NCommand::Command::CS_SOCIAL_CONFIRM_NEWS_V2);

	// 상점
	this->AddCommand(CMD_CS_REQ_SHOP_BUY_ITEM, ProjectZ::NCommand::Command::CS_REQ_SHOP_BUY_ITEM);
	this->AddCommand(CMD_CS_REQ_SHOP_SELL_ITEM, ProjectZ::NCommand::Command::CS_REQ_SHOP_SELL_ITEM);
	this->AddCommand(CMD_CS_REQ_PURCHASE_PRODUCT_LIST, ProjectZ::NCommand::Command::CS_REQ_PURCHASE_PRODUCT_LIST);
	this->AddCommand(CMD_CS_REQ_ZEN_SHOP_ITEM_LIST, ProjectZ::NCommand::Command::CS_REQ_ZEN_SHOP_ITEM_LIST);
	this->AddCommand(CMD_CS_BUY_ITEM_WITH_ZEN, ProjectZ::NCommand::Command::CS_BUY_ITEM_WITH_ZEN);
//	this->AddCommand(CMD_CS_BUY_ITEM_WITH_ZEN_TO_USE, ProjectZ::NCommand::Command::CS_BUY_ITEM_WITH_ZEN_TO_USE);
	this->AddCommand(CMD_CS_REQUEST_BUY_ITEM, ProjectZ::NCommand::Command::CS_REQUEST_BUY_ITEM);
	this->AddCommand(CMD_CS_REG_BUY_ITEM_RESULT, ProjectZ::NCommand::Command::CS_REG_BUY_ITEM_RESULT);
	this->AddCommand(CMD_CS_BUY_ITEM_CONSUME, ProjectZ::NCommand::Command::CS_BUY_ITEM_CONSUME);
	this->AddCommand(CMD_CS_IOS_SEND_GIFT_SHOW, ProjectZ::NCommand::Command::CS_IOS_SEND_GIFT_SHOW);
	this->AddCommand(CMD_CS_MY_WALLET, ProjectZ::NCommand::Command::CS_MY_WALLET);
	this->AddCommand(CMD_CS_ITEM_GACHYA, ProjectZ::NCommand::Command::CS_ITEM_GACHYA);
	this->AddCommand(CMD_CS_ITEM_GACHYA_MAIL, ProjectZ::NCommand::Command::CS_ITEM_GACHYA_MAIL);
	this->AddCommand(CMD_CS_REQ_EXTEND_PERIOD, ProjectZ::NCommand::Command::CS_REQ_EXTEND_PERIOD);
	this->AddCommand(CMD_CS_UPGRADE_STONE_GACHYA, ProjectZ::NCommand::Command::CS_UPGRADE_STONE_GACHYA);
	this->AddCommand(CMD_CS_UPGRADE_STONE_GACHYA_MAIL, ProjectZ::NCommand::Command::CS_UPGRADE_STONE_GACHYA_MAIL);

	// 대장간
	this->AddCommand(CMD_CS_BLACKSMITH_REFINE, ProjectZ::NCommand::Command::CS_BLACKSMITH_REFINE);
	this->AddCommand(CMD_CS_BLACKSMITH_UPSTONE, ProjectZ::NCommand::Command::CS_BLACKSMITH_UPSTONE);
	this->AddCommand(CMD_CS_BLACKSMITH_UPSTONE_LIST, ProjectZ::NCommand::Command::CS_BLACKSMITH_UPSTONE_LIST);
	this->AddCommand(CMD_CS_BLACKSMITH_UPSTONE_COMPLETE, ProjectZ::NCommand::Command::CS_BLACKSMITH_UPSTONE_COMPLETE);
	this->AddCommand(CMD_CS_REQ_UPGRADE_STONE_COMBINE, ProjectZ::NCommand::Command::CS_REQ_UPGRADE_STONE_COMBINE);
	this->AddCommand(CMD_CS_REQ_MAGIC_REFINE_INFO, ProjectZ::NCommand::Command::CS_REQ_MAGIC_REFINE_INFO);
	this->AddCommand(CMD_CS_BLACKSMITH_MAGIC_REFINE, ProjectZ::NCommand::Command::CS_BLACKSMITH_MAGIC_REFINE);

	// GM
	this->AddCommand(CMD_AS_EMERGENCY_NOTICE, ProjectZ::NCommand::Command::AS_EMERGENCY_NOTICE);
	this->AddCommand(CMD_AS_RESOURCE_RELOAD, ProjectZ::NCommand::Command::AS_RESOURCE_RELOAD);
	this->AddCommand(CMD_AS_KICKUSER, ProjectZ::NCommand::Command::AS_KICKUSER);
	this->AddCommand(CMD_AS_UPDATE_WORLDBOSS_RANK, ProjectZ::NCommand::Command::AS_UPDATE_WORLDBOSS_RANK);
	this->AddCommand(CMD_AS_LOGONOFF, ProjectZ::NCommand::Command::AS_LOGONOFF);
	this->AddCommand(CMD_AS_FINDUSER, ProjectZ::NCommand::Command::AS_FINDUSER);

	// 아이템 진화
	this->AddCommand(CMD_CS_EVOLUTION_ITEM_CREATE, ProjectZ::NCommand::Command::CS_EVOLUTION_ITEM_CREATE);
	this->AddCommand(CMD_CS_EVOLUTION_ITEM_UPGRADE, ProjectZ::NCommand::Command::CS_EVOLUTION_ITEM_UPGRADE);
	this->AddCommand(CMD_CS_EVOLUTION_POINT_INFO, ProjectZ::NCommand::Command::CS_EVOLUTION_POINT_INFO);
	this->AddCommand(CMD_CS_EVOLUTION_POINT_USE, ProjectZ::NCommand::Command::CS_EVOLUTION_POINT_USE);
	this->AddCommand(CMD_CS_EVOLUTION_POINT_GIVE_TO_ITEM, ProjectZ::NCommand::Command::CS_EVOLUTION_POINT_GIVE_TO_ITEM);
	this->AddCommand(CMD_CS_EVOLUTION_POINT_CHARGE, ProjectZ::NCommand::Command::CS_EVOLUTION_POINT_CHARGE);

	// Fairy
	this->AddCommand(CMD_CS_REQ_FAIRY_GACHYA, ProjectZ::NCommand::Command::CS_REQ_FAIRY_GACHYA);
	this->AddCommand(CMD_CS_REQ_FAIRY_EGG_HATCH, ProjectZ::NCommand::Command::CS_REQ_FAIRY_EGG_HATCH);
	this->AddCommand(CMD_CS_REQ_FAIRY_SACRIFICE, ProjectZ::NCommand::Command::CS_REQ_FAIRY_SACRIFICE);
	this->AddCommand(CMD_CS_REQ_FAIRY_REBIRTH, ProjectZ::NCommand::Command::CS_REQ_FAIRY_REBIRTH);
	this->AddCommand(CMD_CS_ULTIMATE_EVOLUTION_FAIRY, ProjectZ::NCommand::Command::CS_ULTIMATE_EVOLUTION_FAIRY);
	this->AddCommand(CMD_CS_REQ_FAIRY_COMBINE, ProjectZ::NCommand::Command::CS_REQ_FAIRY_COMBINE);
	this->AddCommand(CMD_CS_EVOLUTION_FAIRY, ProjectZ::NCommand::Command::CS_EVOLUTION_FAIRY);

	//일일 보상
	this->AddCommand(CMD_CS_DAILY_REWARD_LIST, ProjectZ::NCommand::Command::CS_DAILY_REWARD_LIST);
	this->AddCommand(CMD_CS_DAILY_REWARD, ProjectZ::NCommand::Command::CS_DAILY_REWARD);
	this->AddCommand(CMD_CS_DAILY_REWARD_GET_NEXT, ProjectZ::NCommand::Command::CS_DAILY_REWARD_GET_NEXT);
	this->AddCommand(CMD_CS_DAILY_REWARD_GACHYA, ProjectZ::NCommand::Command::CS_DAILY_REWARD_GACHYA);
	this->AddCommand(CMD_CS_DAILY_REWARD_REQ_BATTLE_PET_GACHYA, ProjectZ::NCommand::Command::CS_DAILY_REWARD_REQ_BATTLE_PET_GACHYA);

	// BattlePet
	this->AddCommand(CMD_CS_REQ_BATTLE_PET_GACHYA, ProjectZ::NCommand::Command::CS_REQ_BATTLE_PET_GACHYA);
	this->AddCommand(CMD_CS_REQ_COMBINE_BATTLE_PET, ProjectZ::NCommand::Command::CS_REQ_COMBINE_BATTLE_PET);
	this->AddCommand(CMD_CS_ULTIMATE_EVOLUTION_BATTLE_PET, ProjectZ::NCommand::Command::CS_ULTIMATE_EVOLUTION_BATTLE_PET);
	this->AddCommand(CMD_CS_ULTIMATE_EVOLUTION_BATTLE_PET_V2, ProjectZ::NCommand::Command::CS_ULTIMATE_EVOLUTION_BATTLE_PET_V2);

	// server only messages
	//ADDCMD(NInbound, SS_CHECK_BATTLE_LATENCY);

	// for test
	this->AddCommand(CMD_CS_GET_TEST_ITEM, ProjectZ::NCommand::CS_GET_TEST_ITEM::OnExecute);
	this->AddCommand(CMD_CS_TEST, ProjectZ::NCommand::CS_TEST::OnExecute);
	this->AddCommand(CMD_CS_COPY_UPGRADE_STONE, ProjectZ::NCommand::CS_COPY_UPGRADE_STONE::OnExecute);

	// WORLD BOSS
	this->AddCommand(CMD_CS_REQ_WORLD_BOSS_INFO, ProjectZ::NCommand::Command::CS_REQ_WORLD_BOSS_INFO);
	this->AddCommand(CMD_CS_REQ_WORLD_BOSS_PARTY_LIST, ProjectZ::NCommand::Command::CS_REQ_WORLD_BOSS_PARTY_LIST);
	this->AddCommand(CMD_CS_REQ_WORLD_BOSS_CREATE_PARTY_ROOM, ProjectZ::NCommand::Command::CS_REQ_WORLD_BOSS_CREATE_PARTY_ROOM);
	this->AddCommand(CMD_CS_REQ_WORLD_BOSS_PARTY_JOIN, ProjectZ::NCommand::Command::CS_REQ_WORLD_BOSS_PARTY_JOIN);
	this->AddCommand(CMD_CS_REQ_WORLD_BOSS_PARTY_JOIN_V2, ProjectZ::NCommand::Command::CS_REQ_WORLD_BOSS_PARTY_JOIN_V2);
	this->AddCommand(CMD_CS_WORLD_BOSS_PARTY_READY, ProjectZ::NCommand::Command::CS_WORLD_BOSS_PARTY_READY);
	this->AddCommand(CMD_CS_REQ_WORLD_BOSS_CREATE_SINGLE, ProjectZ::NCommand::Command::CS_REQ_WORLD_BOSS_CREATE_SINGLE);
	this->AddCommand(CMD_CS_REQ_WORLD_BOSS_CREATE_PARTY_FRIEND, ProjectZ::NCommand::Command::CS_REQ_WORLD_BOSS_CREATE_PARTY_FRIEND);
	this->AddCommand(CMD_CS_WORLD_BOSS_RESULT, ProjectZ::NCommand::Command::CS_WORLD_BOSS_RESULT);
	this->AddCommand(CMD_CS_REQ_WORLD_BOSS_RANK_REWORD, ProjectZ::NCommand::Command::CS_REQ_WORLD_BOSS_RANK_REWORD);
	this->AddCommand(CMD_CS_WORLD_BOSS_RANK_REWARD_INFO, ProjectZ::NCommand::Command::CS_WORLD_BOSS_RANK_REWARD_INFO);
	//this->AddCommand(CMD_CS_REQ_WORLD_BOSS_DETAIL_INFO, ProjectZ::NCommand::Command::CS_REQ_WORLD_BOSS_DETAIL_INFO);
	this->AddCommand(CMD_CS_WORLD_BOSS_PARTY_INVITE_RES, ProjectZ::NCommand::Command::CS_WORLD_BOSS_PARTY_INVITE_RES);
	// WORLD BOSS

	// 일일 미션
	this->AddCommand(CMD_CS_REQ_DAILY_MISSION, ProjectZ::NCommand::Command::CS_REQ_DAILY_MISSION);
	this->AddCommand(CMD_CS_REQ_DAILY_MISSION_REWARD, ProjectZ::NCommand::Command::CS_REQ_DAILY_MISSION_REWARD);

	// 체력치
	this->AddCommand(CMD_CS_STAMINA_INFO, ProjectZ::NCommand::Command::CS_STAMINA_INFO);

	// 길드
	this->AddCommand(CMD_CS_GUILD_MYINFO, ProjectZ::NCommand::Command::CS_LOGIN_GUILD_MEMBER);
	//this->AddCommand(CMD_CS_GUILD_MYINFO, ProjectZ::NCommand::Command::CS_LOGOUT_GUILD_MEMBER);
	this->AddCommand(CMD_CS_GUILD_MENU_INFO, ProjectZ::NCommand::Command::CS_GUILD_INFO);
	this->AddCommand(CMD_CS_GUILD_MEMBER_LIST, ProjectZ::NCommand::Command::CS_GUILD_MEMBER_LIST);
	this->AddCommand(CMD_CS_GUILD_CREATE, ProjectZ::NCommand::Command::CS_CREATE_GUILD);
	this->AddCommand(CMD_CS_GUILD_APPLY_ADMISSION, ProjectZ::NCommand::Command::CS_JOIN_GUILD);
	this->AddCommand(CMD_CS_GUILD_FIND, ProjectZ::NCommand::Command::CS_SEARCH_GUILD);
	this->AddCommand(CMD_CS_GUILD_GRADE_UP, ProjectZ::NCommand::Command::CS_LEVEL_UP_GUILD);
	this->AddCommand(CMD_CS_GUIlD_LIST, ProjectZ::NCommand::Command::CS_GUILD_LIST);
	this->AddCommand(CMD_CS_GUILD_COOLDOWN, ProjectZ::NCommand::Command::CS_GUILD_COOLDOWN);

	this->AddCommand(CMD_CS_GUILD_LEAVE, ProjectZ::NCommand::Command::CS_GUILD_LEAVE);
	this->AddCommand(CMD_CS_GUILD_EXILE, ProjectZ::NCommand::Command::CS_GUILD_EXILE);
	this->AddCommand(CMD_CS_GUILD_BUFF_GACHYA, ProjectZ::NCommand::Command::CS_GUILD_BUFF_GACHYA);
	this->AddCommand(CMD_CS_GUILD_KEY_UPDATE, ProjectZ::NCommand::Command::CS_GUILD_KEY_UPDATE);
	this->AddCommand(CMD_CS_GUILD_LIST_VIEW_STATE_UPDATE, ProjectZ::NCommand::Command::CS_GUILD_LIST_VIEW_STATE_UPDATE);
	this->AddCommand(CMD_CS_GUILD_DESCRIPTION_UPDATE, ProjectZ::NCommand::Command::CS_GUILD_DESCRIPTION_UPDATE);

}

MainFriendList::~MainFriendList() {
	// TODO Auto-generated destructor stub
}

void
MainFriendList::OnClose(User * pUser, bool bForceClose)
{
	Session * pSession = pUser->GetSession();
	if (NULL != pSession && true == bForceClose)
	{
		//pSession->ResetUser();
		pSession->Close();
		return;
	}

	pUser->OnDisconnect();
}

} /*NState*/ } /* namespace ProjectZ */
